跳到主要内容

Nacos 配置集群

集群部署架构图

参考资料 Nacos 支持三种部署模式

默认 Nacos 使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的 Nacos 节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos 采用了集中式存储的方式来支持集群化部署,目前只支持 MySQL 的存储。

Nacos 支持三种部署模式

  • 单机模式-用于测试和单机试用。
  • 集群模式-用于生产环境,确保高可用。
  • 多集群模式-用于多数据中心场景。

Nacos 持久化切换配置

在单机模式时 Nacos 使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。而且存在一致性问题,所以需要切换为统一的数据库

初始化 MySQL 数据库,数据库初始化文件:nacos-mysql.sql

执行里面附带的脚本:

修改 conf/application.properties 文件,增加支持 mysql 数据源配置(目前只支持 mysql),添加 mysql 数据源的 url、用户名和密码。

spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.211.137:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

再重启 Nacos(注意,要等一两分钟)

Nacos 集群配置

梳理出 3 台 nacos 集器的不同服务端口号,设置 3 个端口:

  • 3333
  • 4444
  • 5555

复制出 cluster.conf

内容(这里条件有限,就使用单台设备做集群了):

192.168.111.144:3333
192.168.111.144:4444
192.168.111.144:5555

注意,这个 IP 不能写 127.0.0.1,必须是 Linux 命令 hostname -i 能够识别的 IP

编辑 Nacos 的启动脚本 startup.sh,使它能够接受不同的启动端口

/mynacos/nacos/bin 目录下有 startup.sh

平时单机版的启动,都是 ./startup.sh 即可

但是,集群启动,我们希望可以类似其它软件的 shell 命令,传递不同的端口号启动不同的 nacos 实例。(说白了就是使用单机模拟集群)

命令: ./startup.sh -p 3333 表示启动端口号为 3333 的 nacos 服务器实例,和上一步的 cluster.conf 配置的一致。

执行方式 startup.sh -p 端口号

Nginx 配置负载均衡器

修改 nginx 的配置文件 - nginx.conf

修改内容

按照指定启动

截止到此处,1 个 Nginx + 3 个 nacos 注册中心 + 1 个 mysql

测试集群

启动 3 个 nacos 注册中心

startup.sh - p 3333
startup.sh - p 4444
startup.sh - p 5555

查看 nacos 进程启动数

ps -ef | grep nacos | grep -v grep | wc -l

启动 nginx

./nginx -c /usr/local/nginx/conf/nginx.conf

查看 nginx 进程

ps - ef| grep nginx

测试通过 nginx,访问 nacos

http://192.168.111.144:1111/nacos/#/login

新建一个配置测试

新建后,可在 linux 服务器的 mysql 新插入一条记录

select * from config;

让微服务 cloudalibaba-provider-payment9002 启动注册进 nacos 集群

server:
port: 9002

spring:
application:
name: nacos-payment-provider
c1oud:
nacos:
discovery:
#配置Nacos地址
#server-addr: Localhost:8848
#换成nginx的1111端口,做集群
server-addr: 192.168.111.144:1111

management:
endpoints:
web:
exposure:
inc1ude: '*'

修改配置文件

启动微服务 cloudalibaba-provider-payment9002 访问 nacos,查看注册结果